package rn.automacao.controle;

import java.io.IOException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import rn.automacao.dominio.AtendimentoVO;
import rn.automacao.dominio.FuncionarioVO;
import rn.automacao.dominio.TipoVO;
import rn.automacao.fabrica.FabricaDAO;
import rn.automacao.persistencia.FuncionarioDAO;
import rn.automacao.persistencia.ObjetoDAO;
import rn.automacao.persistencia.RelatorioDAO;
import rn.automacao.util.Datas;


@SuppressWarnings("serial")
public class Controle extends javax.servlet.http.HttpServlet implements	javax.servlet.Servlet {

	public Controle() {
		super();
	}

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		String controle = request.getParameter("controle");
		HttpSession session = request.getSession();
		if (controle.equals("cadastroAtendimento")) {

			int codOS = Integer.parseInt(request.getParameter("codos"));
			int itemOS = Integer.parseInt(request.getParameter("item"));
			int codfunc = Integer.parseInt((String)session.getAttribute("codfunc"));

			//Pegar o Codigo do Tipo que vem pelo Request
			//O Codigo vem na forma do exemplo: 1-Contrato
			String[] tipo = (request.getParameter("tipo")).split("-");
			int tipoOS = Integer.parseInt(tipo[0]);
			//Pronto, o codigo esta em int, na variavel tipoOS

			String dataA = request.getParameter("dataAbertura");
			String dataE = request.getParameter("dataExecucao");
			Date dataAbertura = Datas.pegaData(dataA);
			Date dataExecucao = Datas.pegaData(dataE);
			double valor = Double.parseDouble(request.getParameter("valor"));
			String obs = request.getParameter("obs");
			int paga = 0;

			FuncionarioVO funcionario = new FuncionarioVO();
			funcionario.setCodigo(codfunc);

			TipoVO tipodeOS = new TipoVO();
			tipodeOS.setCodtipo(tipoOS);

			AtendimentoVO atend = new AtendimentoVO(codOS, itemOS, dataAbertura, dataExecucao, valor, obs, paga, funcionario, tipodeOS);


			ObjetoDAO dao = FabricaDAO.selecionaDAO("atendimento");
			dao.cadastrar(atend);

			request.setAttribute("sucesso", "Atendimento " + codOS + " cadastrado!");
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/sucesso.jsp");
			rd.forward(request, response);

		}

		if (controle.equals("abreAtendimento")) {

			ObjetoDAO dao = FabricaDAO.selecionaDAO("funcionario");
			Collection<Object> funcionarios = dao.listar();
			request.setAttribute("funcionarios", funcionarios);
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/atendimento.jsp");
			rd.forward(request, response);
		}

		if (controle.equals("escolheFuncionarioMes")) {


			String[] funcionario = (request.getParameter("funcionario")).split("-");
			int codFunc = Integer.parseInt(funcionario[0]);
			String[] mes = (request.getParameter("mes")).split("-");
			int codMes = Integer.parseInt(mes[0]);
			int ano = Integer.parseInt(request.getParameter("ano"));

			String nomeMes = mes[1];
			String nomeFunc = funcionario[1];

			ArrayList relatorioOS = ((ArrayList)RelatorioDAO.pesquisar(codFunc, codMes, ano));
			FuncionarioDAO funcDao = new FuncionarioDAO();
			FuncionarioVO funcionarioMeta = (FuncionarioVO)funcDao.pesquisar(codFunc, "codfunc");

			session.setAttribute("nomeMes", nomeMes);
			session.setAttribute("nomeFunc", nomeFunc);
			session.setAttribute("nomeAno", request.getParameter("ano"));
			session.setAttribute("funcionarioMeta", funcionarioMeta);
			session.setAttribute("relatorioOS", relatorioOS);
			response.sendRedirect("administrador/relatorio.jsp");
		}


	}
}